package com.mju.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.github.pagehelper.Page;
import com.mju.exception.ServiceException;

@SuppressWarnings("serial")
public class RespData extends HashMap<String,Object>{
	public static RespData success() {
		RespData r=new RespData();
        r.put("code", 0);
        r.put("msg", "");
        r.put("count", 0);
        r.put("data", null);
        return r;
	}	
	public static RespData success(String msg) {
		RespData r=new RespData();
        r.put("code", 0);
        r.put("msg", msg);
        r.put("count", 0);
        r.put("data", null);
        return r;
	}		
	public static RespData failed(String errMsg,int errCode)
	{
		RespData r = new RespData();

    	r.put("code", errCode);
        r.put("msg", errMsg);
        r.put("count", 0);
        r.put("data", null);
        return r;
	}
	
	public static RespData failed(Exception ex) {
		RespData r = new RespData();
		if(ex instanceof ServiceException) {
			r.put("code",((ServiceException) ex).getCode());			
		}else
			r.put("code", 600);
        r.put("msg", ex.getMessage());
        r.put("count", 0);
        r.put("data", null);
        return r;
	}
	
	public static RespData data(Map<String,?> data) {
		RespData r = new RespData();
		r.put("code", 0);
        r.put("msg", "");
        r.put("count", 1);
        r.put("data",data);
        return r;
	}
	
	
	public static RespData data(List<?> data){
		RespData r = new RespData();
        r.put("code", 0);
        r.put("msg", "");
        r.put("count", data.size());
        r.put("data", data);
        return r;
    }
	
	public static RespData success(String msg,List<?> data){
		RespData r = new RespData();
        r.put("code", 0);
        r.put("msg", msg);
        r.put("count", data.size());
        r.put("data", data);
        return r;
    }
	
	public static RespData data(Page<?> data){
		RespData r = new RespData();
        r.put("code", 0);
        r.put("msg", "");
        r.put("count",data.getTotal());
        r.put("data", new ArrayList<>(data.getResult()));
        return r;
    }
}
